Smartball Antibot Version 1

Credits & Thanks: 
(In order of appearance :P)

Smartball - Coding
Salleydeth_DeWicked - The entire inspiration for the anti
UKBikeNut - Immediately adopted the anti and ran/tested on the jolt servers
VeiN - Provided me with a server for TONS of early testing
Pitbull - Same as above - always glad to help test.
NU Team - Happily going through multiple test versions to get a well working anti
}TCP{Wolf - Providing helpful suggestions, coding examples, and advice where needed ;) Played a major role in lag dissipation. Thanks!
Hyper.nl - Provided information with coop problems which led to their resolve - he's the entire reason SBAB was made compatible in coop.
Swift{WKYB} - Pointed out crucial holes and problems in the anti...and so they were fixed :)

If I've forgotten anyone I'm sorry but thanks to you too! :)


- EARLIER VERSIONS -
It seems that the early stages of this antibot got attention and I ended up mass producing different versions for specific people left and right. Because of this, (too) many versions of the anti were floating around and people were confused as to what was the most recent or best one. This is version 1, the first REAL version..hopefully to get everyone to start using a universal version. This "real" version has the filenames SBABOT.u and SBABC.u. The earlier test versions were SBAB.u and SBABS.u. If you see these, then yes, they are old and outdated.


==-Installation-==
To get it to run, go to advanced options, then advanced, then game engine settings, and then server packages. Click add and type in SBABC. DO NOT add SBABOT to server packages - it is not supposed to be there. Next get back to game engine settings and go to server actors. Click add and type in SBABOT.SBAnti. This will enable the anti on the server, and will run off of the options which are set right in advanced options under the menu "Smartball Antibot." 


~~_-- OPTIONS --_~~
(Note: Any option that has to do with time is measured in seconds)


AutoBan - Pretty obvious. Automatically bans a player if they are caught cheating when set to true. Keep in mind if they are lagging and are kicked for not responding fast enough, the server will not ban them.

AutoKick - Fairly obvious as well. Pretty much the only reason this option is here is for server maintenance or testing the protection. When set to true, a player is kicked if they are caught cheating. This also includes not responding in time.

AllowOneLag - This is for the people who usually lag when they first enter the server. It allows every player to not respond in time ONE time only. So if they lag out for their first scan, they won't be kicked and will be successfully scanned the second time. (Note: This includes the "No response was received in time" and "No packages were detected!" messages. Both of these messages can occasionally occur in error, just because someone was lagging.)



LogMode - This lets you configure what is to be logged by SBAB if you would like.

	Log_Checks - This will write to the log every time the anti gets ready to start a new set of scans. It will write to the log before and after it scans everyone.
	
	Log_Ip_Requests - When this is set to true, a list of IPs will be written to the log when the admin requests them.

	Log_Kicks - When this is set to true, it will be written to the log whenever someone is removed. This includes cheating and not responding in time.

	Log_Lag_Out - If you allow someone to lag once and this is set to true, it will be written to the log when they use their one lag out.

	Log_Scans - If this is set to true, it will be written in the log when(and how many times) a player has been/is being scanned.


(Note: you don't need to have any logging options enabled if you don't want them. They are merely there for debugging purposes or if the admin likes to know everything that goes on  ;)  Regardless, when someone is caught with a modified package, it is logged no matter what logging options are set.)



AutoLogIps - Logs the ips of every player in the server at certain intervals.

IPCheckIntervals - This sets the interval for the above option; it sets how long to wait before logging the server's players' IP #'s.

CheckIntervals - This sets how long the server should wait before scanning every player. It waits whatever length of time is set here and then starts scans. Keep in mind that it spends 3 seconds on every player, so if you set it to 10 seconds and you have 5 players, it will wait 10 seconds, spend 15 seconds on the players, wait 10 more, then scan again. So in reality the anti waits CheckIntervals + (3 * Total Number of Players).

NumScans - How many times a player is scanned. When CheckIntervals is hit and it begins scans, if a player has already been scanned NumScans times, they are no longer accounted for (unless ScanAlways is set to true - explained below).

ScanAlways - When this is enabled, the NumScans option is ignored. It will always scan whenever the CheckIntervals time has passed, regardless of how many times the client has been scanned already. This is useful for catching bots that can be remotely executed after scans have been complete.

Banned - Obviously, a list of the banned IP #'s. Keep in mind, an IP that is in this list bans the ip itself AND any ips that begin with the same numbers. For example, if the IP 67.193.203.13 is blocked, 67.193.203.134 is blocked as well. Also, when someone is banned, the anti saves their IP AND name in this slot. You will notice the ip is there, then a space, then the name. NEVER delete the space from any of the banned arrays. If you want to manually add in an IP but with no name, be sure to put a space at the end. For example, if you open the ini and type in "67.67.67.67", it won't work. You must type "67.67.67.67 ". If you ban someone in game, don't worry because it takes care of itself for you.



-_-_+ COMMANDS +_-_-


Admin Set SBAB.SBAnti Ripaddr True    -- This command sends a list of
every player's IP to all admins and logs it.

Admin Set SBAB.SBAnti IDList True    -- This command sends a list of
the player IDs to every admin in the server.

Admin Set SBAB.SBAnti Com Ban (name/ID)   -- You put a player's name or ID
at the end of this command and it will ban them (it is also written to the
log that they have been banned). If a player has a name like "0" or some
name written in ascii, I would suggest banning them by ID so that you don't
accidently ban someone else.

Admin Set SBAB.SBAnti Com Unban (IP)   -- Obviously, the opposite of the
ban function. Only thing is that you need to enter the IP address..doesn't
work with names.

Admin Set SBAB.SBAnti BList True    -- Sends a list of all banned IPs to
admins in the server.

Admin Set SBAB.SBAnti NBan (IP)    -- This bans players, but you enter the
IP that you want to ban instead of the player name or ID. This is useful for
range banning....i.e. if you wanted to ban all IP's beginning with 67.193,
you just type  Admin Set SBAB.SBAnti NBan 67.193.

Admin Set SBAB.SBAnti Com IDIP (ID)    -- You enter a player's ID with
this command, and it will message all admins with that player's IP number
(it is also logged). Just useful for getting a single player's IP without
getting every players'.




A production that was made thanks to many people :)

--Smartball

Smartbaiii@hotmail.com
